/**
 * 项目名称:
 *
 * @Author: 夏国倩
 * @Date: 2023/10/12 19:05
 * @Copyright
 */
package multithreading;

/*
有一个抽奖池,该抽奖池中存放了奖励的金额,该抽奖池用一个数组int[] arr = {10,5,20,50,100,200,500,800,2,80,300};
创建两个抽奖箱(线程)设置线程名称分别为“抽奖箱1”，“抽奖箱2”，
随机从arr数组中获取奖项元素并打印在控制台上,格式可参考如下：
抽奖箱1 产生了一个 10 元大奖
抽奖箱2 产生了一个 100 元大奖
......
提示：
    奖池里面的奖项被抽走之后，不能再被随机抽到了。所有奖项的都被抽完，游戏结束
 */
public class choujiang {
    public static void main(String[] args) throws InterruptedException {
        int[] arr = {10, 5, 20, 50, 100, 200, 500, 800, 2, 80, 300};
        Thread t1 = new Processor20(arr);
        Thread t2 = new Processor20(arr);
        t1.setName("抽奖池1");
        t2.setName("抽奖池2");
        t1.start();
        //Thread.sleep(500);
        t2.start();
    }
}

class Processor20 extends Thread {
    int[] arr;

    public Processor20(int[] arr) {
        this.arr = arr;
    }

    public void run() {
        for (int i = 0; i < arr.length; i++) {
            //随机数
            int num = (int) (Math.random() * arr.length);
            synchronized (arr) {
                if (arr[num] == 0) {
                    i--;
                    continue;
                } else {
                    System.out.println(Thread.currentThread().getName() + "又产生了一个" + arr[num] + "元大奖！");
                    arr[num] = 0;
                }
            }
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}